/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.colswedev.lab3.entity;

import java.util.ArrayList;
import java.util.List;



/**
 * Clase entidad para guardar los modulos del sistema.
 * @author Oscar
 * Se agrega la clase Modulo para desarrollar el caso de uso navegar modulos
 */
public class Modulo {

    /** Identifiacion del modulo. */
    private int id;
    /** Nombre para identificar el modulo. */
    private String nombre;
    /** Lista de usuarios que pueden acceder el modulo. */
    private List<Usuario> usuariosList;

    /** 
     * Constructor.
     */
    public Modulo() {
        usuariosList = new ArrayList<Usuario>();
    }

    /** 
     * constructor con parametros.
     * @param codigo ID modulo.
     * @param nombrep Nombre del modulo.
     */
    public Modulo(final int codigo, final String nombrep) {
        this.id = codigo;
        this.nombre = nombrep;
        usuariosList = new ArrayList<Usuario>();

    }

    /**
     * Constructor con parametros.
     * @param idp Id del modulo.
     * @param nombrep nombre del modulo.
     * @param usuariosListp Lista de usuarios del modulo.
     */
    public Modulo(final int idp, final String nombrep, final List<Usuario> usuariosListp) {
        this.id = idp;
        this.nombre = nombrep;
        this.usuariosList = usuariosListp;
    }

    /**
     *  Devuelve el numero identificacion del modulo.
     * @return Id del modulo.
     */
    public int getCodigo() {
        return id;
    }

    /**
     * Para fijar el id del modulo.
     * @param codigo Numero identificacion del modulo.
     */
    public void setCodigo(final int codigo) {
        this.id = codigo;
    }

    /**
     * Obtiene el nombre del modulo.
     * @return Nombre del modulo.
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Fija el nombre del modulo.
     * @param nombrep Nombre a asignar.
     */
    public void setNombre(final String nombrep) {
        this.nombre = nombrep;
    }

    /**
     * Para obtener los usuarios que acceden al modulo.
     * @return Usuarios del modulo.
     */
    public List<Usuario> getUsuarios() {
        return usuariosList;
    }

    /**
     * Setea los usuarios del modulo.
     * @param usuarios Usuarios a fijar.
     */
    public void setUsuarios(final List<Usuario> usuarios) {
        this.usuariosList = usuarios;
    }

    /**
     * Adiciona un usuario a la lista de usarios que acceden al modulo.
     * @param u Usuario a adicionar.
     */
    public void agregarUsuario(final Usuario u) {
        usuariosList.add(u);
    }
}
